import cn.crystalorigin.plugin.AsyncLoader
import cn.crystalorigin.plugin.Loader
import cn.crystalorigin.plugin.MustAfter

@MustAfter(Test2::class)
object Test1 : AsyncLoader() {
    override val name = "1"

    override suspend fun load() {
        println("Loading 1")
    }
}

@MustAfter(Test3::class)
object Test2 : AsyncLoader() {
    override val name = "2"

    override suspend fun load() {
        println("Loading 2")
    }
}

object Test3 : AsyncLoader() {
    override val name = "3"

    override suspend fun load() {
        println("Loading 3")
    }
}

fun main() {
    Loader.init()
}